#define _ARH_VRIJEME_C_
#include "vrijeme.h"

#include "vj_sucelje.h"
#include "prekidi.h"


//dozvoli/zabrani proslijedjivanje prekida PIT-a preko PIC-a
void arh_dozvoli_prekid_sata ()
{
	i8259_omoguci_prekid(IRQ_TIMER);
}
void arh_zabrani_prekid_sata ()
{
	i8259_zabrani_prekid(IRQ_TIMER);
}

//! ucitaj broj u brojilo i kreni s brojenjem
void arh_sat_ucitaj_brojilo (arh_vrijeme_t broj)
{
	arh_i8253_posalji(broj);
}

//! procitaj broj iz brojila
arh_vrijeme_t arh_sat_procitaj_brojilo ()
{
	return arh_i8253_procitaj();
}

//! slanje brojila PIT-u.
static int arh_i8253_posalji (arh_vrijeme_t brojilo)
{
	outb(I8253_CMD, I8253_CMD_LOAD);
	outb(I8253_CH0, brojilo & 0xFF);
	outb(I8253_CH0, brojilo >> 8);

	return 0;
}

//! citanje brojila PIT-a
static arh_vrijeme_t arh_i8253_procitaj ()
{
	int nizi, visi;

	nizi = inb(I8253_CH0);
	visi = inb(I8253_CH0);

	return (arh_vrijeme_t) (nizi | (visi << 8));
}
